fix: serialize configured fields without Bun array binding - #9
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
text[]placeholderstext[]inside PostgreSQL withjsonb_array_elements_textRoot cause
The adapter previously passed:
to placeholders cast as
text[].Bun's PostgreSQL client serializes that JavaScript array as:
rather than a PostgreSQL array literal such as:
PostgreSQL therefore rejects the write with SQLSTATE
22P02:The exception was caught by the provider boundary and surfaced to Studio as
provider_error: Could not create the secret.Fix
Configured field names are now sorted and serialized as JSON:
PostgreSQL reconstructs the array in the statement:
array(select jsonb_array_elements_text($n::jsonb))This keeps the adapter independent of Bun-specific SQL helpers, safely supports field names requiring escaping, and preserves the existing metadata schema and public result shape.
Evidence
The failure was reproduced directly against PostgreSQL 17.6 with Bun SQL:
which returns:
The same local Minikube database was independently verified to support:
vault.create_secret(text,text,text)ankh_secret_store.secret_metadataValidation
Regression tests were added for:
text[]in SQLLocal lint, format, typecheck, build, and test commands are pending maintainer execution.
Closes #8